/**
 * fork, vfork区别示例程序：
 * 使用vfork, 父子进程同时对变量a进行自增并打印
 */
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>

int main()
{
    int a = 1;
    pid_t pid;

    if ((pid = vfork()) == -1) { /* error */
        perror("fork error");
        exit(1);
    }
    else if (pid == 0) { /* child */
        ++a;
        printf("child process a = %d\n", a);
        exit(1);
    }
    else {
        //sleep(1);
        ++a;
        printf("parent process a = %d\n", a);
        wait(pid);
    }

    return 0;
}
